package day16;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

//测试 HashMap的使用
public class Test1_Map {
    public static void main(String[] args) {
        //1,统计用户输入的字符串中
        String input= new Scanner(System.in).nextLine();
        //定义map,存结果,类似:a=1,b=2,c=1
        Map<Character,Integer> map = new HashMap<>() ;
        //2,遍历字符串,获取 每个字符
        for (int i = 0; i < input.length() ; i++) {
            //根据下标获取每个字符
            char key = input.charAt(i);
            //根据key获取value,
            Integer value = map.get(key) ;
            //判断,是null的话就没存过,直接存1
            if(value==null){
 //TODO  原理:向map里存入数据时,会拿着key计算存储位置
 //TODO  如果节点上没存过数据,就尽量存在数组节点上
//TODO 如果节点存过数据了,再去判断key存过吗,存过就把原来的value覆盖掉
                    //key不存在那就是一个新节点形成链表
                map.put(key,1) ;
            }else{
            //判断,有值,不是null的话,就是以前存过,直接+1
                map.put(key,value+1) ;
            }
        }
        System.out.println(map);
    }
}
